#!/bin/bash

# This file is part of util-linux.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This file is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.

TS_TOPDIR="${0%/*}/../.."
TS_DESC="Year 2147483646"

. "$TS_TOPDIR"/functions.sh
ts_init "$*"

ts_check_test_command "$TS_HELPER_CAL"

export TERM=linux

USETERM=$( ts_has_option "useterm" "$*" )
MYMONTH="12 2147483646"
MYYEAR="2147483646"


CAL_TEST_TIME=1516562739  # 21st January 2018
export CAL_TEST_TIME

function call_cal {
	local testname=$(echo "$2" | sed 's/-//g')

	if [ "$3" == "$MYYEAR" ]; then
		testname="${testname}-year"
	else
		testname="${testname}-month"
	fi

	ts_init_subtest "$testname"
	ts_log "$1"
	shift
	if [ "$USETERM" == "yes" ]; then
		$TS_HELPER_CAL "$@"
	fi
	$TS_HELPER_CAL "$@" >> $TS_OUTPUT
	ts_finalize_subtest
}

call_cal "Gregorian - Monday-based month" -1m $MYMONTH
call_cal "Gregorian - Sunday-based month" -1s $MYMONTH
call_cal "Julian    - Monday-based month" -1mj $MYMONTH
call_cal "Julian    - Sunday-based month" -1sj $MYMONTH

call_cal "Gregorian - Monday-based 3 months" -3m $MYMONTH
call_cal "Gregorian - Sunday-based 3 months" -3s $MYMONTH
call_cal "Julian    - Monday-based 3 months" -3mj $MYMONTH
call_cal "Julian    - Sunday-based 3 months" -3sj $MYMONTH

call_cal "Gregorian - Monday-based year" -1m $MYYEAR
call_cal "Gregorian - Sunday-based year" -1s $MYYEAR
call_cal "Julian    - Monday-based year" -1mj $MYYEAR
call_cal "Julian    - Sunday-based year" -1sj $MYYEAR


call_cal "Gregorian - Monday-based month with weeks" -1mw $MYMONTH
call_cal "Gregorian - Sunday-based month with weeks" -1sw $MYMONTH
call_cal "Julian    - Monday-based month with weeks" -1mjw $MYMONTH
call_cal "Julian    - Sunday-based month with weeks" -1sjw $MYMONTH

call_cal "Gregorian - Monday-based 3 months with weeks" -3mw $MYMONTH
call_cal "Gregorian - Sunday-based 3 months with weeks" -3sw $MYMONTH
call_cal "Julian    - Monday-based 3 months with weeks" -3mjw $MYMONTH
call_cal "Julian    - Sunday-based 3 months with weeks" -3sjw $MYMONTH

call_cal "Gregorian - Monday-based year with weeks" -1mw $MYYEAR
call_cal "Gregorian - Sunday-based year with weeks" -1sw $MYYEAR
call_cal "Julian    - Monday-based year with weeks" -1mjw $MYYEAR
call_cal "Julian    - Sunday-based year with weeks" -1sjw $MYYEAR

ts_finalize
